import 自动测试
from 插件.基础函数.常用函数 import *
from 工程.九州项目.接收激励.公共函数 import *

    
def 主收通道无用信号抑制测试初始化():
    # 射频矩阵1.连接()
#    信号源1.连接()
    信号源2.连接()
    频谱仪1.连接()
    产品初始化()

    信号源2.设置调制关()
    频谱仪1.设置中心频率(70e6)

    频谱仪1.设置扫宽(10e3)
    频谱仪1.设置分析带宽自动()
    频谱仪1.设置视频带宽(10)
    频谱仪1.设置参考幅度(2)
    频谱仪1.设置关闭噪声()
    频谱仪1.设置频标模式正常()
    频谱仪1.设置开触发()

    zbb产品.被测产品SPI.设置PTT控制指令("PTT无效")

    print("主收通道控制范围和精度测试初始化")
    
def 主收通道无用信号抑制(通道='主收1',频点=118.0):
    工作方式='AM'
    频率=频点*1000000
    步进=zbb参数.无用信号步进
    zbb路由.测试主收通道无用信号抑制(通道)
    zbb产品.被测产品SPI.设置通道方式频点(通道, 工作方式, 频点)

    信号源2.设置频率(频率)
    信号源2.设置幅度(-120)
    信号源2.设置射频开()
    延时(2)
    输出幅度=0
    for i in range(20):
        信号源2.设置幅度(-120-i)
        延时(0.1)
        频谱仪1.设置单次触发()
        延时(0.2)
        频谱仪1.设置寻峰值()
        仪器主峰值=频谱仪1.读幅度()
        主峰值=按值转换(仪器主峰值,0.1,0)
        频谱仪1.设置寻下一个峰值()
        仪器次峰值=频谱仪1.读幅度()
        次峰值=按值转换(仪器次峰值,0.1,0)
        if 主峰值-次峰值<10:
            输出幅度=(-120-i)
            break;

    if 主峰值<-28:
        raise Exception("未找到主峰！！！")

    信号源2.设置幅度(+20)
    信号源2.设置频率(频率)
    频谱仪1.设置中心频率(70e6)
    频谱仪1.设置扫宽(100e3)
    频谱仪1.设置分析带宽(10e3)
    频谱仪1.设置视频带宽(1e3)
    延时(2)
    抑制=90
    扰点=[]

    频谱仪1.设置寻峰值()
    仪器主峰值=频谱仪1.读幅度()
    有用信号主峰=按值转换(仪器主峰值,0.1,0)-1.5
    延时(1)

    for i in range(int(5e6),int(频率-19e6),int(步进)):
        信号源2.设置频率(i)
        # 延时(0.05)
        频谱仪1.设置单次触发()
        # 延时(0.01)
        频谱仪1.设置寻峰值()
        仪器主峰值=频谱仪1.读幅度()
        主峰值=按值转换(仪器主峰值,0.1,0)
        if 主峰值>有用信号主峰:
            if i!=频率*2 and i!=频率*3 and i!=频率*4 and i!=频率/2 and i!=频率/3 and i!=频率/4 and i!=频率/5 and i!=频率/6:
                print(i,频率,主峰值)
                抑制=19-输出幅度
                扰点.append([i,主峰值])

    for i in range(int(频率+20e6),int(501e6),int(步进)):
        信号源2.设置频率(i)
        # 延时(0.05)
        频谱仪1.设置单次触发()
        # 延时(0.01)
        频谱仪1.设置寻峰值()
        仪器主峰值=频谱仪1.读幅度()
        主峰值=按值转换(仪器主峰值,0.1,0)
        '''
        仪器频率=频谱仪1.读频率()
        主峰频率=按值转换(仪器频率,0.1,0)

        频谱仪1.设置寻下一个峰值()
        仪器次峰值=频谱仪1.读幅度()
        次峰值=按值转换(仪器次峰值,0.1,0)
        if (主峰值-次峰值>10 and abs(主峰频率-70e6)<1e1) or (主峰值>-4 and abs(主峰频率-70e6)<1e1):
            print(i,频率,主峰值,次峰值)
        '''
        if 主峰值>有用信号主峰:
            if i!=频率*2 and i!=频率*3 and i!=频率*4 and i!=频率/2 and i!=频率/3 and i!=频率/4 and i!=频率/5 and i!=频率/6:
                print(i,频率,主峰值)
                抑制=19-输出幅度
                扰点.append([i,主峰值])

    频谱仪1.设置中心频率(70e6)
    频谱仪1.设置扫宽(10e3)
    频谱仪1.设置分析带宽自动()
    频谱仪1.设置视频带宽(10)

    for f in 扰点:
        信号源2.设置频率(f[0])
        延时(1)
        for i in range(30):
            信号源2.设置幅度(-30-i)
            延时(0.1)
            频谱仪1.设置单次触发()
            延时(0.4)
            频谱仪1.设置寻峰值()
            仪器主峰值=频谱仪1.读幅度()
            主峰值=按值转换(仪器主峰值,0.1,0)
            频谱仪1.设置寻下一个峰值()
            仪器次峰值=频谱仪1.读幅度()
            次峰值=按值转换(仪器次峰值,0.1,0)
            抑制=-30-i-输出幅度
            if 主峰值-次峰值<10:
                抑制=-30-i-输出幅度
                break;

        if  抑制<=80:
            break;

    print(有用信号主峰,扰点)
    # if 抑制>90:
    #     抑制=90
    项目="主收通道无用信号抑制('"+通道+"',"+str(频点)+")"
    判断合格保存(项目,抑制,80)

if __name__=='__main__':
    pass
    选择产品(1)
    主收通道无用信号抑制测试初始化()
    主收通道无用信号抑制('主收1',118)
